Cargar bibliotecas

library(sf)
library(raster)
library(dplyr)
library(leaflet)
library(plotly)
library(DT)

Cargar documentos

# Carga de primates 
prim <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )
st_crs(prim) = 4326
# Carga de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
)
# Carga de provincias
provincias <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
    quiet = TRUE
  )

Comando para cruzar datos

prim<- 
 prim %>%
 st_join(cantones["canton"])

Parte 1

Tabla de primates avistados en Costa Rica

prim %>%
  st_drop_geometry() %>%
  select(family,
         species,
         stateProvince,
         canton,
         eventDate
         ) %>%
  DT::datatable(
    colnames = c("Familia", "Especie", "Provincia", "Cantón", "Fecha"),
    rownames = FALSE,
    options = list(
      searchHighlight = TRUE,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

Parte 2

Gráfico de pastel

Primtot <- data.frame("species"=rownames(prim), prim)
dataprim <- prim[,c('species', 'year')]

figprim <- plot_ly(dataprim, labels = ~species, values = ~year, type = 'pie')
figprim <- figprim %>% layout(title = 'Avistamiento de primates por especie en Costa Rica (1839-2021).',
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

figprim

Parte 3

Mapa Leaflet

Con este comando se filtra la cantidad de especies por su respectivo nombre.

alouatta_palliata <-
  prim %>%
  filter(species == "Alouatta palliata")
cebus_capucinus <-
  prim %>%
  filter(species == "Cebus capucinus")
ateles_geoffroyi <-
  prim %>%
  filter(species == "Ateles geoffroyi")
saimiri_oerstedii <-
  prim %>%
  filter(species == "Saimiri oerstedii")

Mapa de registros de presencia de Alouatta Palliata

alouatta_palliata %>%
  select(stateProvince,
         canton,
         locality,
         eventDate) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'red',
    fillOpacity = 1,
    popup = paste(
      alouatta_palliata$stateProvince,
      alouatta_palliata$canton,
      alouatta_palliata$locality,
      alouatta_palliata$eventDate,
      sep = '<br/>'
    ),
    group = "Alouatta Palliata"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c("Alouatta Palliata")
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  ) 

Mapa de registros de presencia de Cebus Capucinus

cebus_capucinus %>%
  select(stateProvince,
         canton,
         locality,
         eventDate) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'blue',
    fillOpacity = 1,
    popup = paste(
      cebus_capucinus$stateProvince,
      cebus_capucinus$canton,
      cebus_capucinus$locality,
      cebus_capucinus$eventDate,
      sep = '<br/>'
    ),
    group = "Cebus Capucinus"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c("Cebus Capucinus")
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  ) 

Mapa de registros de presencia de Ateles Geoffroyi

ateles_geoffroyi %>%
  select(stateProvince,
         canton,
         locality,
         eventDate) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'lime',
    fillOpacity = 1,
    popup = paste(
      ateles_geoffroyi$stateProvince,
      ateles_geoffroyi$canton,
      ateles_geoffroyi$locality,
      ateles_geoffroyi$eventDate,
      sep = '<br/>'
    ),
    group = "Ateles Geoffroyi"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c("Ateles Geoffroyi")
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  ) 

Mapa de registros de presencia de Saimiri Oerstedii

saimiri_oerstedii %>%
  select(stateProvince,
         canton,
         locality,
         eventDate) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'yellow',
    fillOpacity = 1,
    popup = paste(
      saimiri_oerstedii$stateProvince,
      saimiri_oerstedii$canton,
      saimiri_oerstedii$locality,
      saimiri_oerstedii$eventDate,
      sep = '<br/>'
    ),
    group = "Saimiri Oerstedii"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c("Saimiri Oerstedii")
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  ) 

Mapa climático Leaflet

# Obtener capa raster de worldclim
alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)
# Recortar la capa con las provincias de Costa Rica
altitud_cr <-
  alt %>%
  mask(provincias) %>%
  crop(provincias)
# Mapa Leaflet
leaflet() %>%
  setView(lng = -84.0, lat = 10.0, zoom = 7) %>%
  addTiles(group = "OpenStreetMap") %>%
  addRasterImage(altitud_cr, colors = "RdYlBu", group = "Altitud") %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap"),
    overlayGroups = c("Altitud")
  )